<?php
require_once('dao/CommandeDao.php');
require_once('dao/ClientDao.php');
require_once('dao/MailDao.php');
require_once('dao/OffreMobileDao.php');
require_once('utils/csv.inc.php');
require_once('utils/ftp.inc.php');
require_once('dao/OffreFixeDao.php');

/**
 * Classe de création de fichier CSV de demande d'activation
 */
class ActivationRequestFixe {
	
	public static function createRequest($idCommande){
		global $logger;
		
		$logger->info("Génération du fichier d'activation de ligne pour la commande : " + $idCommande);
		
		$data = array();
		$data2 = array();
		$count = 0;
		
		// Récupération la commande
		$commande = CommandeDao::findByCommandeId($idCommande);
		
		if ($commande["statut"] != "en cours"){
			$logger->error("La commande  possède un statut incorrect :  " + $commande["statut"]);
			throw new Exception("La commande  possède un statut incorrect");
		}
		
		// Récupération de la fiche client
		$clients = ClientDao::searchById($commande['code_client_hto']);
		
		if (count($clients) == 0){
			$logger->error("La fiche client est inexistant en base pour le client ". $commande['code_client_hto']);
			throw new Exception("La fiche client est inexistante");
		} else {
			$ficheClient = $clients[0];
		}
		
		// Récupération des lignes
		$lignesCommande = CommandeDao::getLignesCommandeFixe($idCommande);
		if(!$lignesCommande){$lignesCommande = array();}
		
		$lignesOptionsCommande = CommandeDao::getOptionsLignesCommandeFixe($idCommande);
		if(!$lignesOptionsCommande){$lignesOptionsCommande = array();}
		
		$lignesCommande = array_merge($lignesCommande,$lignesOptionsCommande);

		// Si la commande ne possède aucune ligne de commande 
		if ($lignesCommande == null){
			$logger->error("La commande ne possède aucune ligne en base");
			throw new Exception("La commande ne possède aucune ligne");
		}
		
		// Génération chaque ligne du fichier CSV
		foreach ($lignesCommande as $ligneCommande){
			
			$logger->info("Traitement de la ligne : ".$ligneCommande["id"]);
			
			//défini le type de ligne pour le dossier en FTP
			if($ligneCommande['type_offre']=="vga" or $ligneCommande['type_offre']=="vga_num" or $ligneCommande['type_offre']=="vga_option" or $ligneCommande['type_offre']=="vga_num_option")
			{
				$type = "VGA";
			}elseif($ligneCommande['type_offre']=="voip" or $ligneCommande['type_offre']=="voip_option"){
				$type = "VOIP";
			}elseif($ligneCommande['type_offre']=="xdsl" or $ligneCommande['type_offre']=="xdsl_option"){
				$type = "XDSL";
			}
			
			$data[$count] = array(
					"Id" => $count + 1,															// Compteur 
					"Nom" => $ficheClient['raison_social'],						// Raison social de la société
					"IVRCode " => CODE_IVR,														// Code IVR
					"Offre" => $ligneCommande['offre_mobile_nom'] ,								// Offre 
					"Type de ligne" => $ligneCommande['type_offre'],	
					"Ligne VOIP" => $ligneCommande['ligne'],									//pour la voip: trunk, portabilité ou les deux														
					"NDI" => $ligneCommande['ndi'],												
					"Identifiant ADV" => $ligneCommande['identifiant_adv'],	 
					"Reduc. Abonnement" => $ligneCommande['abonnement'],
					"Reduc. Minute National" => $ligneCommande['minute_national'],
					"Reduc. Minute International" => $ligneCommande['minute_international'],
					"Grille Tarifaire" => $ligneCommande['grille_tarifaire'],
					"Engagement" => $ligneCommande['engagement'],
					"Raison Sociale" => $ligneCommande['raison_social'],
					"Siret" => $ligneCommande['siret'],
					"APE" => $ligneCommande['ape'],
					"Adresse" => $ligneCommande['adresse'],
					"Code Postal" => $ligneCommande['cp'],
					"Ville" => $ligneCommande['ville'],
					"Batiment" => $ligneCommande['batiment'],
					"Escalier" => $ligneCommande['escalier'],
					"Etage" => $ligneCommande['etage'],
					"Porte" => $ligneCommande['porte'],
					"Correspondant" => $ligneCommande['corespondant'],
					"Télephone" => $ligneCommande['telephone']
					
			);
			$count++;
		}

		// Nom du fichier CSV à générer
			//recup des millisecondes
			//$time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
			//$msec = substr($time, strpos($time, ".") + 1);
		
		$filename = "ActivationRequestFixe_".date("Ymd_His").".csv";
		
		$logger->info("Génération du fichier CSV de demande d'activation : " . $filename);
		
		// Appel de la fonction de génération de fichier CSV
		writeCSV(MM_CSV_PATH,$filename,$data);

		// Envoi sur le serveur en FTP
		//if (!MM_DEV_MODE){
			if (MM_FTP_ENABLE){
			uploadFile(MM_CSV_PATH.$filename,
						MM_FTP_PROVISIONNING_FIXE.$type."/".$filename,
						MM_FTP_HOST_FIXE,
						MM_FTP_USERNAME_FIXE,
						MM_FTP_PASSWORD_FIXE,
						MM_ARCHIVE_PATH_FIXE."activation-fixe/".$filename);
				if (!MM_DEV_MODE){
					// envoi d'un mail
					$type_mail = "Demande d'activation"; 
					$resultat_mail = MailDao::EnvoiMail($type_mail,$ficheClient['raison_social'],$filename2);     
						
					$logger->info("Envoi FTP du fichier de demande d'activation réalisé  : " . MM_FTP_HOST);
				}
				
			} else {
				$logger->info("L'envoi FTP est désactivé");
			}
		//} 
		//break;
	}

}




